iT邦幫忙

2022 iThome 鐵人賽

DAY 11
0
Modern Web

從基礎開始,用 JavaScript 從頭建立起程式肌肉 系列 第 11

Day11 字串型別(1):宣告、字串相加、自動轉型

  • 分享至 

  • xImage
  •  

宣告字串

我們之前介紹過了數字型別,今天我們要來介紹要怎麼宣告「字串型別」,首先我們用 let 來做宣告:

let myName = "Key";
myName; // Key

引號

跟數字型別不一樣的是,宣告字串時要在值的前後加上單引號 '' 或是 "" 雙引號,這樣才會被認定為字串。如果沒有加上引號的話,會造成無法被判定這個字是要被當作值去賦予,會被當作是一個變數名稱、屬性名稱或保留字等等。

如果沒有用引號包起來的話,Key 會被當成是一個變數。

這時就會報錯,跟我們說 Key 跟 myName 這兩個變數都尚未被定義。

但如果有用引號包起來就可以成功地被宣告,將 Key 這個字已字串型別賦予到 myName 這個變數,這時可以用之前學過的 typeof 來做辨識:

let myName = "Key";
console.log(myName); // Key
console.log(typeof myName); // string 代表字串的意思

我們也可以寫中文

let myName = "Key";
let wallet = "沒有錢"
console.log(myName, wallet); // Key 沒有錢

單引號跟雙引號的效果是一樣的,我們可以自由選用其中一種來使用,但不能混用,如:

let myName = "Key';// Uncaught SyntaxError: Invalid or unexpected token
// 前面雙引號,後面單引號,顯示格式錯誤無法宣告

既然是一樣的功能,為什麼要分兩種呢,下面舉最簡單的例子:

let a = 'let's go';

因為某些文字上的需要,如這段句子中間也有個單引號,這樣就會造成出錯

這時我們需要使用雙引號來包住這段文字,就能正常顯示:

let a = "let's go";
console.log(a); // let's go

跳脫字元(Escaping characters)

上面的例子除了改用雙引號外,也可以使用跳脫字元來修復那一行程式碼。跳脫字元(Escaping characters)的意思是我們需要確保它們被辨識為文字,而非程式碼本身。在 JavaScript 中,我們在字元的前面放一個反斜線(Enter上方)解決這個問題:

let a = 'let\'s go';
console.log(a); // let's go

字串相加

前面介紹過數字型別的相加,做的就是一般數學的四則運算:

apple = 1 + 1;
apple; // 2

字串也可以用加號 + 連起來,這時候加號的功用就是連接字串(Concatenating strings),可以把前後文或兩個變數連接起來:

// 兩個字串相加
let a = 'Hi' + '你好呀!'
console.log(a); // Hi你好呀!:

// 中間也可以加半形空白,產生間距
let a = 'Hi' + ' ' +'你好呀!'
console.log(a); // Hi 你好呀!:
// 也可以將兩個變數相加
let today = "Monday";
let mood = "blue";
let todayMood = today + mood;
console.log(todayMood); // Mondayblue

數字與字串相加

這是我們宣告數字的寫法,沒有用引號,這時 1 會被認定為是數字:

let apple = 1;
console.log(typeof apple); // number

但要注意的是,如果用引號將數字包起來,這時 1 就會被認定為是字串:

let apple = "1";
console.log(typeof apple); // string

雖然是一樣的數字,但有沒有加引號,互相相加會產生不同結果

let apple = 1 + 1;
console.log(apple); // 2

let apple2 = '1' + '1';
console.log(apple2); // 11

自動轉型

「自動轉型」是 JavaScript 一個貼心又有趣的特色,以下面的程式碼為例:

let myName = "Key";
let myAge = 18;
let total = myName + myAge;
console.log(total); // Key18;

可以看到 myName 是字串型別,myAge 是數字型別,我們把它們相加在一起後賦予到 total 這個變數,那 total 現在會是甚麼型別呢:

let myName = "Key";
let myAge = 18;
let total = myName + myAge;
console.log(total); // Key18;
console.log( typeof total); // string

可以看到這時 total 是字串,也就是說原本的數字型別在被跟字串相加時,為了順利連接成功,會直接被 JavaScript 轉換成字串型別後再跟另一個字串相加,形成新的字串,這就是自動轉型的其中一個例子。


參考資料

線上課程
MDN


上一篇
Day10 賦值運算子
下一篇
Day12 字串型別(2):NaN、字串處理方法、樣板字面值
系列文
從基礎開始,用 JavaScript 從頭建立起程式肌肉 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言